#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<limits.h>
#include<algorithm>
using namespace std;
typedef struct{
        int a;
        int b;
        int ang;
}cri;
cri meb[100001];
int fa[40001],n,m;
int cmp(const cri &a,const cri &b){
    return a.ang>b.ang;
}
int fnd(int a){
    return fa[a]==a?a:fnd(fa[a]);
}
int unn(int a,int b){
    int a1=fnd(fa[a+n]),b1=fnd(fa[b+n]);
    a=fnd(a);
    b=fnd(b);
    if(a==b) return 1;
    fa[b1]=fa[a];
    fa[a1]=fa[b];
    return 0;
}
int main(){
    memset(meb,0,sizeof(meb));
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++){
            fa[i]=i;
            fa[i+n]=i+n;
    }
    for(int i=1;i<=m;i++){
        scanf("%d %d %d",&meb[i].a,&meb[i].b,&meb[i].ang);
    }
    sort(meb+1,meb+m+1,cmp);
    for(int i=1;i<=m;i++){
        if(unn(meb[i].a,meb[i].b)==1){
           printf("%d",meb[i].ang);
           return 0;
        }
    }
    printf("0");
    return 0;
}
